package br.com.senac.pi.util;

import br.com.senac.pi.interfaces.PIDataObject;

public class Utilidades {
	
	/**
	 * Metodo para organizar os itens do modelo por ordem do valor retornado no
	 * metodo getDataSorting da interface.
	 * @param itens Array de itens PIDataObject que vao ser ordenados
	 * @param menorAnterior Indice menor anterior do array
	 * @param maiorAnterior Indice maior anterior do array
	 */
	public void ordenaItens(PIDataObject itens[], int menorAnterior, int maiorAnterior) {
		int menor = menorAnterior;
		int maior = maiorAnterior;
		PIDataObject meio;

		if (maiorAnterior > menorAnterior) {
			meio = itens[(menorAnterior + maiorAnterior) / 2];

			while (menor <= maior) {
				while ((menor < maiorAnterior) && (itens[menor].getDataSorting().compareToIgnoreCase(meio.getDataSorting()) < 0))
					++menor;
				while ((maior > menorAnterior) && (itens[maior].getDataSorting().compareToIgnoreCase(meio.getDataSorting()) > 0))
					--maior;
				if (menor <= maior) {
					PIDataObject t = itens[maior];
					itens[maior] = itens[menor];
					itens[menor] = t;

					++menor;
					--maior;
				}
			}

			if (menorAnterior < maior)
				ordenaItens(itens, menorAnterior, maior);
			if (menor < maiorAnterior)
				ordenaItens(itens, menor, maiorAnterior);
		}
	}
}
